# -*- coding: utf-8 -*-

#This file is part of pyLot library.
#
# pyLot is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pyLot is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with pyLot.  If not, see <http://www.gnu.org/licenses/>.

__author__ = u'Pierre Puiseux, Guillaume Baty'
__copyright__ = u"Copyright 2011-2012 (C) andheo, Université de Pau et des Pays de l'Adour"
__credits__ = [u'Pierre Puiseux', u'Guillaume Baty']
__license__ = "GNU Lesser General Public License"

from pyLot.core import Datum, check_type

class NationOlympique (Datum) :
  """
  Objet représentant une nation dans le cadre des JO.
  Value : type booleen, définit si la nation est représentée
  """
  user_keys = (u'm_or', u'm_argent', u'm_bronze')

  def _setvalue (self, value) :
    Datum._setvalue(self, value)
    # Si la nation n'est plus représentée, on remet le nombre de médailles à 0
    if not self._value :
      self.m_or = 0
      self.m_argent = 0
      self.m_bronze = 0

  def _setm_or (self, m_or) :
    # vérifie que la valeur est de type entier ou vaut None
    check_type(u'm_or', m_or, int, none=True)
    self._m_or = m_or
    if self._m_or > 0 and self.value is False :
      """ La nation a obtenu une médaille, elle est donc représentée"""
      self.value = True

  m_or = property(fget=lambda self: self._m_or,
                  fset=_setm_or,
                  doc=u"Nombre de médailles d'or")

  """
  idem pour argent et bronze
  """


if __name__ == "__main__" :

  fr = NationOlympique(u'fr;bool;False;;;;Europe;France;0;0;0')
  fr.m_or += 1
  assert(fr.value == True)
  assert(fr.toCsv() == u'fr;bool;True;;;;Europe;France;1;0;0')